package com.naiterui.ehp.ps.sms.enums;

import cn.hutool.core.util.StrUtil;

import java.util.Arrays;

public enum ChuanglanStatus {
    SUCCESS("0", "提交成功"),
    ERROR_101("101", "无此用户"),
    ERROR_102("102", "密码错"),
    ERROR_103("103", "提交过快（提交速度超过流速限制）"),
    ERROR_104("104", "系统忙（因平台侧原因，暂时无法处理提交的短信）"),
    ERROR_105("105", "敏感短信（短信内容包含敏感词）"),
    ERROR_106("106", "消息长度错（>1036或<=0）"),
    ERROR_107("107", "包含错误的手机号码"),
    ERROR_108("108", "手机号码个数错（群发>1000或<=0）"),
    ERROR_109("109", "无发送额度（该用户可用短信数已使用完）"),
    ERROR_110("110", "不在发送时间内"),
    ERROR_113("113", "扩展码格式错（非数字或者长度不对）"),
    ERROR_114("114", "可用参数组个数错误（小于最小设定值或者大于1000）;变量参数组大于20个"),
    ERROR_116("116", "签名不合法或未带签名（在更换自己的签名需要在平台上报备后方可使用该签名）"),
    ERROR_117("117", "IP地址认证错,请求调用的IP地址不是系统登记的IP地址"),
    ERROR_118("118", "用户没有相应的发送权限（账号被禁止发送）"),
    ERROR_119("119", "用户已过期"),
    ERROR_120("120", "违反防盗用策略(日发送限制)"),
    ERROR_123("123", "发送类型错误"),
    ERROR_124("124", "白模板匹配错误"),
    ERROR_125("125", "匹配驳回模板，提交失败"),
    ERROR_127("127", "定时发送时间格式错误"),
    ERROR_128("128", "内容编码失败"),
    ERROR_129("129", "JSON格式错误"),
    ERROR_130("130", "请求参数错误（缺少必填参数）"),
    ERROR_133("133", "单一手机号错误"),
    ERROR_134("134", "违反防盗策略, 超过月发送限制"),
    ERROR_135("135", "超过同一手机号相同内容发送限制"),
    ERROR_136("136", "不可批量提交验证码短信"),
    ERROR_999("-1", "请求繁忙清稍后再试");

    /**
     * 异常代码
     */
    private final String code;

    /**
     * 异常消息
     */
    private final String msg;

    /**
     * 构造函数
     */
    ChuanglanStatus(String code, String msg) {
        this.code = code;
        this.msg = msg;
    }

    public static ChuanglanStatus byCode(String returnStatus) {
        return Arrays.stream(ChuanglanStatus.values()).filter(chuanglanStatus -> StrUtil.equals(returnStatus, chuanglanStatus.code)).findFirst().orElse(ERROR_999);
    }

    public String msg() {
        return msg;
    }

    public String code() {
        return code;
    }
}
